#版本：HTMLTestRunner-rv 1.1.2
# open方法的解析，file 是要打开的文件的路径，mode 是一个可选参数，用于指定文件打开的模式。以下是 mode 参数的一些常见值及其含义：
# 'r'：读取模式。这是默认模式，如果文件不存在，打开文件时会报错。
# 'w'：写入模式。如果文件已存在，将其覆盖。如果文件不存在，创建新文件。
# 'x'：排他创建模式。如果文件已存在，打开文件时会报错。如果文件不存在，创建新文件。
# 'a'：追加模式。如果文件已存在，写入数据到文件的末尾。如果文件不存在，创建新文件。
# 'b'：二进制模式。通常用于非文本文件（如图片、视频等）。可以与上述模式（如 'rb'、'wb'、'ab'）组合使用。
# 't'：文本模式。这是默认模式，通常用于文本文件。可以与上述模式（如 'rt'、'wt'、'at'）组合使用。
# '+'：更新模式。可以读取和写入文件。可以与上述模式（如 'r+'、'w+'、'a+'）组合使用。
# 例如：
# 'r'：以只读方式打开文件。
# 'w'：以只写方式打开文件，如果文件存在则覆盖，不存在则创建。
# 'x'：以只写方式创建文件，如果文件已存在则失败。
# 'a'：以追加方式打开文件，如果文件不存在则创建。
# 'rb'：以二进制读取模式打开文件。
# 'wb'：以二进制写入模式打开文件，如果文件存在则覆盖，不存在则创建。
# 'ab'：以二进制追加模式打开文件，如果文件不存在则创建。
# 'r+'：以读写模式打开文件，文件必须存在。
# 'w+'：以读写模式打开文件，如果文件存在则覆盖，不存在则创建。
# 'a+'：以读写模式打开文件，如果文件不存在则创建，写入时数据会被追加到文件末尾。
# 这些模式可以组合使用，以满足不同的文件操作需求。例如，'r+' 模式允许同时读取和写入文件，而 'wb' 模式则用于以二进制方式写入文件。

# 下面是传递给 HTMLTestRunner 构造函数的参数：
    # log=True：启用日志记录。
    # verbosity=2：设置详细模式，2 表示更详细的输出。
    # output='report'：指定输出目录（注意：这个参数可能不起作用，具体取决于 HTMLTestRunner 的版本）。
    # title='测试报告'：设置测试报告的标题。
    # report_name='report'：设置测试报告的文件名（不包括扩展名）。
    # open_in_browser=True：在测试完成后自动在浏览器中打开生成的 HTML 报告。
    # description="我是报告描述"：设置测试报告的描述。
    # tested_by="Ravikirana B"：指定测试执行者。
    # add_traceback=False：设置是否在测试失败时添加 traceback（堆栈跟踪）信息。

# 这行代码调用 runner 实例的 run 方法，并传递 suite 作为参数。suite 是一个包含要运行的测试用例的 unittest.TestSuite 实例。
# run 方法执行测试用例，并将结果写入到之前打开的 HTML 文件中。
import unittest
from jd_HTMLTestRunner import HTMLTestRunner # 确保正确导入 HTMLTestRunner

# 使用套件对象，加载对象去添加用例方法
#suite = unittest.defaultTestLoader.discover('.', 'E:/pythonProject/firstProject/firstProject/.venv/test/excute/test_excute_*.py')
suite = unittest.defaultTestLoader.discover('E:/', 'pythonProject/firstProject/firstProject/.venv/test/execute/TestExcute_*.py')

file = 'test.html'
#wb 代表二进制 w 代表 文本txt
with open(file, 'w',encoding='utf-8') as f:
    runner = HTMLTestRunner(log=True,
                            verbosity=2,
                            output='report',
                            title='我是测试报告',
                            report_name='report',
                            open_in_browser=True,
                            description="我是报告描述",
                            tested_by="蔡得利",
                            add_traceback=False)  # 正确创建 HTMLTestRunner 实例
    # runner = HTMLTestRunner(stream=f, title='我是测试报告', description="我是报告描述",
    #                         open_in_browser=True,tested_by="蔡得利", add_traceback=True)
    runner.run(suite)